﻿/*
SINACOR - BMF&Bovespa
Arquivo: Operacao.cs
Criado em: 27-nov-2009 11:59:17
Arquiteto Responsável: ramelo.7comm
*/
using System;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Alocacao.Model
{
    /// <summary>
    /// Class Operacao 
    /// </summary>
    [Serializable]
    public class Operacao : BaseModel
    {

        #region Atributos
        private string _apelidoCliente;
        private string _ativo;
        private int _carteira;
        private int _cliente;
        private int? _codigoAssessor;
        private int _codigoBolsa;
        private int? _codigoClienteFinal;
        private int? _codigoUsuarioFinal;
        private DateTime _dataPregao;
        private int? _digitoClienteFinal;
        private decimal? _fatorValorizacao;
        private Enum.TipoMercado _mercado;
        private Enum.NaturezaOperacao _naturezaOperacao;
        private string _nomeCliente;
        private int _numeroNegocio;
        private int? _numeroOfertaMegaBolsa;
        private decimal _quantidade;
        private decimal? _quantidadeCarteira268;
        private decimal? _quantidadeCarteira268Origem;
        private Enum.TipoLiquidacao _tipoLiquidacao;
        private decimal? _valorNegocio;
        private decimal? _valorTotal;
        private decimal? _valorTotalCarteira268;
        private int? _vencimentoTermo;
        #endregion Atributos

        #region Propriedades
        /// <summary>
        /// Apelido do cliente
        /// </summary>
        public string ApelidoCliente
        {
            get
            {
                return _apelidoCliente;
            }

            set
            {
                _apelidoCliente = value;
                SetValue<string>("ApelidoCliente", ref _apelidoCliente, value);
            }

        }

        /// <summary>
        /// Ativo
        /// </summary>
        public string Ativo
        {
            get
            {
                return _ativo;
            }

            set
            {
                _ativo = value;
                SetValue<string>("Ativo", ref _ativo, value);

            }

        }

        /// <summary>
        /// Carteira
        /// </summary>
        public int Carteira
        {
            get
            {
                return _carteira;
            }

            set
            {
                _carteira = value;
                SetValue<int>("Carteira", ref _carteira, value);
            }

        }

        /// <summary>
        /// Código do cliente
        /// </summary>
        public int Cliente
        {
            get
            {
                return _cliente;
            }

            set
            {
                _cliente = value;
                SetValue<int>("Cliente", ref _cliente, value);
            }

        }

        /// <summary>
        /// Código do Assessor
        /// </summary>
        public int? CodigoAssessor
        {
            get
            {
                return _codigoAssessor;
            }

            set
            {
                _codigoAssessor = value;
                SetValue<int?>("CodigoAssessor", ref _codigoAssessor, value);
            }

        }

        /// <summary>
        /// Código da bolsa
        /// </summary>
        public int CodigoBolsa
        {
            get
            {
                return _codigoBolsa;
            }

            set
            {
                _codigoBolsa = value;
                SetValue<int>("CodigoBolsa", ref _codigoBolsa, value);
            }

        }

        /// <summary>
        /// Código cliente final
        /// </summary>
        public int? CodigoClienteFinal
        {
            get
            {
                return _codigoClienteFinal;
            }

            set
            {
                _codigoClienteFinal = value;
                SetValue<int?>("CodigoClienteFinal", ref _codigoClienteFinal, value);
            }

        }

        /// <summary>
        /// Código usuário final
        /// </summary>
        public int? CodigoUsuarioFinal
        {
            get
            {
                return _codigoUsuarioFinal;
            }

            set
            {
                _codigoUsuarioFinal = value;
                SetValue<int?>("CodigoUsuarioFinal", ref _codigoUsuarioFinal, value);
            }

        }

        /// <summary>
        /// Data do Pregão
        /// </summary>
        public DateTime DataPregao
        {
            get
            {
                return _dataPregao;
            }

            set
            {
                _dataPregao = value;
                SetValue<DateTime>("DataPregao", ref _dataPregao, value);
            }

        }

        /// <summary>
        /// Dígito do cliente final
        /// </summary>
        public int? DigitoClienteFinal
        {
            get
            {
                return _digitoClienteFinal;
            }

            set
            {
                _digitoClienteFinal = value;
                SetValue<int?>("DigitoClienteFinal", ref _digitoClienteFinal, value);
            }

        }

        /// <summary>
        /// Fator de valorização
        /// </summary>
        public decimal? FatorValorizacao
        {
            get
            {
                return _fatorValorizacao;
            }

            set
            {
                _fatorValorizacao = value;
                SetValue<decimal?>("FatorValorizacao", ref _fatorValorizacao, value);
            }

        }

        /// <summary>
        /// Tipo do mercado
        /// </summary>
        public Enum.TipoMercado Mercado
        {
            get
            {
                return _mercado;
            }

            set
            {
                _mercado = value;
                SetValue<Enum.TipoMercado>("Mercado", ref _mercado, value);
            }

        }

        /// <summary>
        /// Natureza da operação
        /// </summary>
        public Enum.NaturezaOperacao NaturezaOperacao
        {
            get
            {
                return _naturezaOperacao;
            }

            set
            {
                _naturezaOperacao = value;
                SetValue<Enum.NaturezaOperacao>("NaturezaOperacao", ref _naturezaOperacao, value);
            }

        }

        /// <summary>
        /// Nome do cliente
        /// </summary>
        public string NomeCliente
        {
            get
            {
                return _nomeCliente;
            }

            set
            {
                _nomeCliente = value;
                SetValue<string>("NomeCliente", ref _nomeCliente, value);
            }

        }

        /// <summary>
        /// Número do negócio
        /// </summary>
        public int NumeroNegocio
        {
            get
            {
                return _numeroNegocio;
            }

            set
            {
                _numeroNegocio = value;
                SetValue<int>("NumeroNegocio", ref _numeroNegocio, value);
            }

        }

        /// <summary>
        /// Número de oferta no Mega Bolsa
        /// </summary>
        public int? NumeroOfertaMegaBolsa
        {
            get
            {
                return _numeroOfertaMegaBolsa;
            }

            set
            {
                _numeroOfertaMegaBolsa = value;
                SetValue<int?>("NumeroOfertaMegaBolsa", ref _numeroOfertaMegaBolsa, value);
            }

        }

        /// <summary>
        /// Quantidade
        /// </summary>
        public decimal Quantidade
        {
            get
            {
                return _quantidade;
            }

            set
            {
                _quantidade = value;
                SetValue<decimal>("Quantidade", ref _quantidade, value);
            }
        }

        /// <summary>
        /// Quantidade alocada na carteira 268
        /// </summary>
        public decimal? QuantidadeCarteira268
        {
            get
            {
                return _quantidadeCarteira268;
            }

            set
            {
                _quantidadeCarteira268 = value;
                //OnPropertyChanged("QuantidadeCarteira268");
                SetValue<decimal?>("QuantidadeCarteira268", ref _quantidadeCarteira268, value);
            }
        }

        /// <summary>
        /// Quantidade alocada na carteira 268 origem
        /// </summary>
        public decimal? QuantidadeCarteira268Origem
        {
            get
            {
                return _quantidadeCarteira268Origem;
            }

            set
            {
                _quantidadeCarteira268Origem = value;
                SetValue<decimal?>("QuantidadeCarteira268Origem", ref _quantidadeCarteira268Origem, value);
            }

        }

        /// <summary>
        /// Tipo de liquidação
        /// </summary>
        public Enum.TipoLiquidacao TipoLiquidacao
        {
            get
            {
                return _tipoLiquidacao;
            }

            set
            {
                _tipoLiquidacao = value;
                SetValue<Enum.TipoLiquidacao>("TipoLiquidacao", ref _tipoLiquidacao, value);
            }

        }

        /// <summary>
        /// Valor do negócio
        /// </summary>
        public decimal? ValorNegocio
        {
            get
            {
                return _valorNegocio;
            }

            set
            {
                _valorNegocio = value;
                SetValue<decimal?>("ValorNegocio", ref _valorNegocio, value);
            }

        }

        /// <summary>
        /// Valor total
        /// </summary>
        public decimal? ValorTotal
        {
            get
            {
                return _valorTotal;
            }

            set
            {
                _valorTotal = value;
                SetValue<decimal?>("ValorTotal", ref _valorTotal, value);
            }

        }

        /// <summary>
        /// Valor total carteira 268
        /// </summary>
        public decimal? ValorTotalCarteira268
        {
            get
            {
                return _valorTotalCarteira268;
            }

            set
            {
                _valorTotalCarteira268 = value;
                SetValue<decimal?>("ValorTotalCarteira268", ref _valorTotalCarteira268, value);
            }

        }

        /// <summary>
        /// Número de dias do vencimento do termo
        /// </summary>
        public int? VencimentoTermo
        {
            get
            {
                return _vencimentoTermo;
            }

            set
            {
                _vencimentoTermo = value;
                SetValue<int?>("VencimentoTermo", ref _vencimentoTermo, value);
            }

        }

        #endregion Propriedades

        #region Construtores
        public Operacao() { }

        public Operacao(string apelidoCliente, string ativo, int carteira, int cliente, int? codigoAssessor, int codigoBolsa, int? codigoClienteFinal, int? codigoUsuarioFinal, DateTime dataPregao, int? digitoClienteFinal, Decimal? fatorValorizacao, Enum.TipoMercado mercado, Enum.NaturezaOperacao naturezaOperacao, string nomeCliente, int numeroNegocio, int? numeroOfertaMegaBolsa, Decimal quantidade, Decimal? quantidadeCarteira268, Decimal? quantidadeCarteira268Origem, Enum.TipoLiquidacao tipoLiquidacao, Decimal? valorNegocio, Decimal? valorTotal, Decimal? valorTotalCarteira268, int? vencimentoTermo)
        {
            this._apelidoCliente = apelidoCliente;
            this._ativo = ativo;
            this._carteira = carteira;
            this._cliente = cliente;
            this._codigoAssessor = codigoAssessor;
            this._codigoBolsa = codigoBolsa;
            this._codigoClienteFinal = codigoClienteFinal;
            this._codigoUsuarioFinal = codigoUsuarioFinal;
            this._dataPregao = dataPregao;
            this._digitoClienteFinal = digitoClienteFinal;
            this._fatorValorizacao = fatorValorizacao;
            this._mercado = mercado;
            this._naturezaOperacao = naturezaOperacao;
            this._nomeCliente = nomeCliente;
            this._numeroNegocio = numeroNegocio;
            this._numeroOfertaMegaBolsa = numeroOfertaMegaBolsa;
            this._quantidade = quantidade;
            this._quantidadeCarteira268 = quantidadeCarteira268;
            this._quantidadeCarteira268Origem = quantidadeCarteira268Origem;
            this._tipoLiquidacao = tipoLiquidacao;
            this._valorNegocio = valorNegocio;
            this._valorTotal = valorTotal;
            this._valorTotalCarteira268 = valorTotalCarteira268;
            this._vencimentoTermo = vencimentoTermo;
        }

        #endregion Construtores

    }

}